package main

import (
	"flag"
	"fmt"
	"time"
)

func main() {
	//定义命令行参数方式1
	var name string
	var age int
	var married bool
	var delay time.Duration
	flag.StringVar(&name, "name", "张三", "姓名")
	flag.IntVar(&age, "age", 18, "年龄")
	flag.BoolVar(&married, "married", false, "婚否")
	flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

	//命令行参数
	flag.Parse()
	fmt.Println(name, age, married, delay)
	//返回命令行参数后的其他参数
	fmt.Println(flag.Args())
	//返回命令行参数后的其它参数个数
	fmt.Println(flag.NArg())
	//返回使用的命令行参数个数
	fmt.Println(flag.NFlag())
	/*
		------------------------------------------------------------------------
		输入:go run ./11_flag_demo/flag_demo.go
		输出：
			张三 18 false 0s
			[]
			0
			0
		------------------------------------------------------------------------
		输入：go run ./11_flag_demo/flag_demo.go -h
		输出：
			Usage of D:\Tmp\Temp\Temp\go-build1087453820\b001\exe\flag_demo.exe:
				  -age int
						年龄 (default 18)
				  -d duration
						延迟的时间间隔
				  -married
						婚否
				  -name string
						姓名 (default "张三")
		------------------------------------------------------------------------
		输入： go run ./11_flag_demo/flag_demo.go -name 喜羊羊 --age=19
		输出：
			喜羊羊 19 false 0s
			[]
			0
			2
		------------------------------------------------------------------------
	*/
}
